# -*- coding: UTF-8 -*-
# @Project ：luffycity 
# @File    ：回顾案例4：闭包.py
# @Author  ：于金龙
# @IDE     ：PyCharm 
# @Date    ：2024/7/15 上午9:48

# 首先给出闭包的必要条件：
# 闭包函数必须返回的一个函数对象/内部函数名
# 闭包函数返回的那个函数必须引用外部变量，而返回的那个函数内部不一定要返回值
def line_conf(a, b):
    def line(x):
        return a * x + b  # 闭包函数返回的那个函数必须引用外部变量

    return line


a = line_conf(15, 1)
c = a(1)
print(c)


# 第二种

def line1_conf():
    a = 1
    b = 2

    def line(x):
        print(a * x + b)  # 而返回的那个函数内部不一定要返回值

    return line


s = line1_conf()
s(1)


# 第三种
def _line_(a, b):
    def line_c(c):
        def line(x):
            return a * (x ** 2) + b * x + c

        return line

    return line_c


s = _line_(1, 1)
x = s(1)
a = x(1)
print(a)
